package com.example.user.service;

import com.example.model.pojo.User;
import com.example.model.pojo.dto.ChangePasswordDTO;
import com.example.model.pojo.dto.LoginDTO;
import com.example.model.pojo.vo.LoginVO;
import com.example.model.pojo.vo.UserInfoVO;

/**
 * 用户服务接口
 */
public interface UserService {

    /**
     * 用户登录
     * @param loginDTO 登录信息
     * @return 登录结果，包含token和用户信息
     */
    LoginVO login(LoginDTO loginDTO);

    /**
     * 用户注销
     * @param userId 用户ID
     * @return 是否成功
     */
    boolean logout(Integer userId);

    /**
     * 修改密码
     * @param userId 用户ID
     * @param changePasswordDTO 密码修改信息
     * @return 是否成功
     */
    boolean changePassword(Integer userId, ChangePasswordDTO changePasswordDTO);

    /**
     * 根据用户ID获取用户信息
     * @param userId 用户ID
     * @return 用户信息
     */
    UserInfoVO getUserInfo(Integer userId);

    /**
     * 根据用户名或学号或教师工资号查询用户
     * @param username 用户名
     * @param studentId 学号
     * @param teacherId 教师工资号
     * @return 用户信息
     */
    User getUserByUsernameOrStudentIdOrTeacherId(String username, String studentId, String teacherId);

    /**
     * 根据用户ID查询用户
     * @param userId 用户ID
     * @return 用户信息
     */
    User getUserById(Integer userId);

    /**
     * 将User对象转换为UserInfoVO
     * @param user 用户对象
     * @return 用户信息VO
     */
    UserInfoVO convertToUserInfoVO(User user);
}